c++ - DrawText VS TextOut Win32
全部标签 我正在寻找一种非常简单的方法来确定客户使用的Windows版本是32位还是64位。我知道有一些使用.NEt的方法,但我希望避免使用它们。我只是想使用类似于下面伪代码的东西,并想知道这种方法是否可靠。IfRegistryKeyexists(HKEY_LOCAL_MACHINE\Software\WOW6432Node)ThenAssume64bitelseAssume32bit谢谢!编辑:更具体地说,我知道有几种不同的方法可以实现查明操作系统是32位还是64位的目标。但我想知道上面单独的方法是否可靠。 最佳答案 我假设您在32位进程中
我需要一些从文件存储和获取数据的方法(在WIN32apic++应用程序中,而不是MFC或.NET)例如关闭窗口时保存窗口的x、y、宽度和高度,并在打开窗口时加载数据。我试过.ini文件,带有函数——WritePrivateProfileString和ReadPrivateProfileString/Int,但是在MSDN上它说“提供此功能只是为了与基于Windows的16位应用程序兼容。应用程序应将初始化信息存储在注册表中。”当我尝试在我的Windows764位机器上读取ini文件时,我遇到了蓝屏!(在visualstudio的Debug模式下)O.O我注意到大多数其他应用程序使用XM
在C++/Windows中获取kernel32.dll符号的唯一途径是SymbolServer吗?谢谢:) 最佳答案 您也可以下载符号包。起点ishere. 关于c++-获取kernel32的符号,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4699048/
嗨我正在编写一些测试内容以查看分配的内存量是否正确显示在Windows任务管理器中。下面是代码;intmain(intargc,char*argv[]){structstatst;charcommandXCopy[200];charcommandDelete[200];char*fNames[2^16];inti=0;char*ptr=(char*)malloc(sizeof(char)*2^32);printf("\nTEST");if(!ptr)printf("\nCannotallocate");elseprintf("\nMemoryallocate");while(1==1)
我正在使用一个api,它使用两个__time32_t对象打开数据库的游标,指定要查询的开始和结束时间。__time32_t是否具有亚秒(毫秒)时间精度?MSDN有点不清楚。我的time32_t对象是这样做的:currentET-=.1;我希望给我currentET内的时间减去10毫秒,但它所做的只是减去整整一秒,就像我这样做一样:currentET-=1;我怎样才能将这个精度返回到time32_t对象中? 最佳答案 __time32_t只是一个整型-除了整型之外,它没有任何特定的分辨率。典型函数__time32_t用于确实具有1秒分
有什么方法(Win32API或其他方法)可以从任何类型的窗口获取文本吗?我可以获得事件窗口的HWND,但是调用发送WM_GETTEXT消息并不总是给我文本(MSWord就是一个很好的例子)。我正在尝试制作一个通用的拼写检查器,用户可以从任何应用程序中按下热键组合并获得对其文本的更正。如果我想要整个文本、只选择文本或说出光标所在的单词,会有不同吗?我可以使用库或Win32API或其他任何东西接受c、c++或c#中的答案。如果有解决方案,但只能使用其他一些编程语言(这不太可能只能在Delphi中完成,而不是使用API的c,但无论如何),我也可以解决。 最佳答案
我在创建命名共享内存和检查其大小时遇到问题。当我在这样的函数中调用它时,函数GetFileSizeEx失败。关于如何调试这个的任何想法?voidtest_getsize(constchar*lpName,intsize){HANDLEhandle=CreateFileMapping(INVALID_HANDLE_VALUE,//usepagingfileNULL,//defaultsecurityPAGE_READWRITE,//read/writeaccess0,//maximumobjectsize(high-orderDWORD)size,//maximumobjectsiz
我有一个应用程序,它从system32读取一些dll,这些dll在安装应用程序时就放在那里。在某些机器上,应用程序运行良好,但在其他机器上它永远不会启动(因为无法加载dll)。什么可能会阻止应用程序从system32读取dll(例如,弄乱PATH变量等)?可以通过将dll放在exe文件旁边来解决,但最好理解为什么某些机器(仅安装在Windows7机器上)可以启动应用程序而其他机器不能。 最佳答案 例如64位版本的Windows。32位DLL应该放在c:\windows\syswow64中。不建议将操作系统文件夹用于您自己的DLL。
我正在调试一个程序并想使用windbg在Secur32!ImpersonateSecurityContext设置一个断点。我的高级Windows调试一书告诉我,我应该能够使用此命令bpSecur32!ImpersonateSecurityContext设置断点。不幸的是,它对我来说失败了。我确实检查了我的符号路径,我相信它是正确的。如果我在windbg中运行xSecur32!*,我也会得到一些符号。000007fe`fd481f28Secur32!LsaQueryInformationPolicy=000007fe`fd481b18Secur32!_delayLoadHelper2=0
我注意到浏览文件夹对话框中似乎有一个错误:打开带有“新建文件夹”按钮的新样式浏览文件夹对话框。(例如.NETFramework中的FolderBrowserDialog类,或Win32C++中的SHBrowseForFolder)。单击“创建新文件夹”按钮创建一个新文件夹。为新文件夹键入一个名称。输入完新文件夹名称后,请勿按Enter键或单击任何内容来停止编辑。当光标仍在闪烁/编辑框仍处于事件状态时,单击“确定”按钮。您必须非常快速地单击“确定”按钮。对话框不会返回文件夹的新名称给程序,而是返回“新文件夹”目录。例如,C:\NewFolder而不是用户输入的内容,例如C:\MyAp